package com.example.network.mapper;

import com.example.network.controller.dto.EmailDTO;
import com.example.network.controller.request.PassRequest;
import com.example.network.controller.request.UserDataRequest;
import com.example.network.controller.request.UserRequest;
import com.example.network.model.entity.User;
import com.example.network.model.entity.UserData;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author LR
 */
@Mapper
public interface UserMapper {

    /**
     * 新增数据
     */
    Boolean insert(User user);

    /**
     * 修改数据
     */
    Boolean updateByUsername(PassRequest request);

    /**
     * 通过主键删除数据
     */
    Boolean DeleteByUserEmail(String email);

    /**
     * 按邮箱地址查找用户
     * @param email
     * @return
     */
    UserRequest getByUserEmail(String email);

    /**
     * 按邮箱地址查找用户们
     * @param username
     * @return
     */
    List<UserRequest> selectByEmail(String username);

    /**
     * 更改数据库中的验证码
     * @param email
     * @param verificationCode
     * @param time
     */
    void updateEmailCode(String email,String verificationCode,long time);

    /**
     * 查找数据库中的验证码
     * @param email
     * @return
     */
    EmailDTO selectEmailCode(String email);

    /**
     * 通过id查询数据
     * @param user
     * @return
     */
    User getById(Integer id);

    /**
     * 添加验证码到数据库
     * @param email
     * @param verificationCode
     * @param time
     */
    void insertEmail(String email,String verificationCode,long time);

    /**
     * 通过email查询数据
     * @param user
     * @return
     */
    User getByEmail(String email);

    void modifyData(UserDataRequest userData);

    // 将服务器的用户头像地址保存到数据库
    void setAvatarsPath(String avatarsPath, String email);

    // 修改用户的资料
    void insertUserData(String email, String username);

    // 查看用户的资料卡
    UserData getUserData(String email);
}


